Detecting sensor orientation characteristics using marker-based localization

ABSTRACT

Methods and systems for detecting sensor orientation characteristics using marker-based localization are disclosed herein. In one aspect, a robotic device can: receive a map of a horizontal marker plane that includes mapped positions of a first marker and a second marker arranged in the horizontal marker plane; receive, from a sensor configured to scan a two-dimensional sensor plane, sensor data indicative of positions of the first and second markers relative to the sensor; determine measured positions of the first and second markers based on the sensor data and a current position of the sensor; determine a difference vector between a first vector that connects the mapped positions of the first and second markers and a second vector that connects the measured positions of the first and second markers; and determine, based on the difference vector, an orientation of the two-dimensional sensor plane relative to the horizontal marker plane.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present disclosure is a continuation of U.S. patent application Ser.No. 16/193,601, filed on Nov. 16, 2018, now U.S. Pat. No. 10,641,899,which is a continuation of U.S. patent application Ser. No. 15/389,888,filed on Dec. 23, 2016, now U.S. Pat. No. 10,162,058, the entirecontents of each of which are herein incorporated by reference as iffully set forth in this description.

BACKGROUND

One or more robots and/or other actors, such as human actors, can movethroughout a space, such as the interior of part or all of a buildingand/or its surrounding outdoor regions, to perform tasks and/orotherwise utilize the space together. One example of a building is awarehouse, which may be used for storage of goods by a variety ofdifferent types of commercial entities, including manufacturers,wholesalers, and transport businesses. Example stored goods may includeraw materials, parts or components, packing materials, and finishedproducts. In some cases, the warehouse may be equipped with loadingdocks to allow goods to be loaded onto and unloaded from delivery trucksor other types of vehicles. The warehouse may also use rows of palletracks to allow for storage of pallets, flat transport structures thatcontain stacks of boxes or other objects. Additionally, the warehousemay use machines or vehicles for lifting and moving goods or pallets ofgoods, such as cranes and forklifts. Human operators may be employed inthe warehouse to operate machines, vehicles, and other equipment. Insome cases, one or more of the machines or vehicles may be roboticdevices guided by computer control systems.

Mobile robotic devices can be used in a number of different environmentsto accomplish a variety of tasks. For example, mobile robotic devicescan deliver items, such as parts or completed products, within indoorenvironments, such as warehouses, hospitals and/or data centers. Whenmobile robotic devices are deployed, they can localize themselves withinan environment in order to navigate and accomplish tasks within theenvironment. This localization can be done using various localizationsensors and techniques

SUMMARY

In one aspect, a method is provided. A computing device receives a mapof a horizontal marker plane that includes mapped positions of a firstmarker and a second marker arranged in the horizontal marker plane. Thecomputing device receives, from a sensor configured to scan atwo-dimensional sensor plane, sensor data indicative of positions of thefirst and second markers relative to the sensor. The computing devicedetermines measured positions of the first and second markers relativeto the map based on the sensor data and a current position of the sensorrelative to the map. The computing device determines a difference vectorbetween a first vector that connects the mapped positions of the firstand second markers and a second vector that connects the measuredpositions of the first and second markers. The computing devicedetermines, based on the determined difference vector, an orientation ofthe two-dimensional sensor plane relative to the horizontal markerplane.

In another aspect, a robotic device is provided. The robotic deviceincludes a sensor configured to scan a two-dimensional sensor plane anda control system configured to perform functions. The functions include:receiving a map of a horizontal marker plane that includes mappedpositions of a first marker and a second marker arranged in thehorizontal marker plane; receiving, from the sensor, sensor dataindicative of positions of the first and second markers relative to thesensor; determining measured positions of the first and second markersrelative to the map based on the sensor data and a current position ofthe sensor relative to the map; determining a difference vector betweena first vector that connects the mapped positions of the first andsecond markers and a second vector that connects the measured positionsof the first and second markers; and determining, based on thedetermined difference vector, an orientation of the two-dimensionalsensor plane relative to the horizontal marker plane.

In another aspect, a system is provided. The system includes a firstmarker and a second marker arranged in a horizontal marker plane, asensor configured to scan a two-dimensional sensor plane, and a controlsystem configured to perform functions. The functions include: receivinga map of the horizontal marker plane that includes mapped positions ofthe first marker and the second marker; receiving, from the sensor,sensor data indicative of positions of the first and second markersrelative to the sensor; determining measured positions of the first andsecond markers relative to the map based on the sensor data and acurrent position of the sensor relative to the map; determining adifference vector between a first vector that connects the mappedpositions of the first and second markers and a second vector thatconnects the measured positions of the first and second markers; anddetermining, based on the determined difference vector, an orientationof the two-dimensional sensor plane relative to the horizontal markerplane.

In another aspect, a non-transitory computer readable medium isprovided. The non-transitory computer readable medium has stored thereoninstructions, that when executed by one or more processors of acomputing device, cause the computing device to perform functions. Thefunctions include: receiving a map of a horizontal marker plane thatincludes mapped positions of a first marker and a second marker arrangedin the horizontal marker plane; receiving, from a sensor configured toscan a two-dimensional sensor plane, sensor data indicative of positionsof the first and second markers relative to the sensor; determiningmeasured positions of the first and second markers relative to the mapbased on the sensor data and a current position of the sensor relativeto the map; determining a difference vector between a first vector thatconnects the mapped positions of the first and second markers and asecond vector that connects the measured positions of the first andsecond markers; and determining, based on the determined differencevector, an orientation of the two-dimensional sensor plane relative tothe horizontal marker plane.

In another aspect, a device is provided. The device includes: means forreceiving a map of a horizontal marker plane that includes mappedpositions of a first marker and a second marker arranged in thehorizontal marker plane; means for receiving, from a sensor configuredto scan a two-dimensional sensor plane, sensor data indicative ofpositions of the first and second markers relative to the sensor; meansfor determining measured positions of the first and second markersrelative to the map based on the sensor data and a current position ofthe sensor relative to the map; means for determining a differencevector between a first vector that connects the mapped positions of thefirst and second markers and a second vector that connects the measuredpositions of the first and second markers; and means for determining,based on the determined difference vector, an orientation of thetwo-dimensional sensor plane relative to the horizontal marker plane.

The foregoing summary is illustrative only and is not intended to be inany way limiting. In addition to the illustrative aspects, embodiments,and features described above, further aspects, embodiments, and featureswill become apparent by reference to the figures and the followingdetailed description and the accompanying drawings.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 illustrates an environment through which a robotic device cannavigate, in accordance with an example embodiment.

FIG. 2A illustrates a map of a two-dimensional marker plane that showsmapped locations of markers in the two-dimensional marker plane, inaccordance with an example embodiment.

FIG. 2B illustrates a map of the two-dimensional marker plane that showsdetections of the markers in the two-dimensional marker plane by arobotic device, in accordance with an example embodiment.

FIG. 3 illustrates a side view of the robotic device in the environment,in accordance with an example embodiment.

FIG. 4A illustrates a map of the two-dimensional marker plane that showsmapped locations of markers and corresponding measured locations of themarkers as detected by the robotic device, in accordance with an exampleembodiment.

FIG. 4B illustrates a mapped vector extending between mapped coordinatesof a pair of markers, in accordance with an example embodiment.

FIG. 4C illustrates a measured vector extending between measuredcoordinates of the pair of markers, in accordance with an exampleembodiment.

FIG. 4D illustrates a difference vector representing a differencebetween the measured vector and the mapped vector, in accordance with anexample embodiment.

FIG. 5A illustrates a side view of the robotic device with amarker-detecting sensor improperly mounted to the robotic device, inaccordance with an example embodiment.

FIG. 5B illustrates a side view of the robotic device with themarker-detecting sensor oscillating between a first position and asecond position, in accordance with an example embodiment.

FIG. 5C illustrates a side view of the robotic device with the roboticdevice vertically tilted due to an uneven ground surface, in accordancewith an example embodiment.

FIG. 6 illustrates a functional block diagram of a computing device, inaccordance with an example embodiment.

FIG. 7 is a flowchart of a method, in accordance with an exampleembodiment.

DETAILED DESCRIPTION

Example methods and systems are described herein. Any exampleimplementation or feature described herein is not necessarily to beconstrued as preferred or advantageous over other implementations orfeatures. The example implementations described herein are not meant tobe limiting. Certain aspects of the disclosed systems and methods can bearranged and combined in a wide variety of different configurations, allof which are contemplated herein.

Furthermore, the particular arrangements shown in the Figures should notbe viewed as limiting. It should be understood that other embodimentsmight include more or fewer of each element shown in a given Figure.Further, some of the illustrated elements may be combined or omitted.Yet further, an example embodiment may include elements that are notillustrated in the Figures.

I. Overview

A robotic device can be configured to localize itself within anenvironment. One methodology for localizing a robotic device can includeusing a laser-based sensor onboard the robotic device to detectretroreflective markers arranged within the environment. Given that thedetected markers have known locations within the environment, a positionand orientation of the robotic device can be determined usingtriangulation techniques, so long as the sensor detects at least threeof the markers. As a result, the robotic device can be localized andguided throughout the environment with high accuracy. In long-termoperation, however, estimates of the robotic device's position andorientation can become less precise.

In practice, for instance, the laser-based sensor can be configured toscan a two-dimensional sensor plane, such as by rotating a laser withinthe two-dimensional sensor plane. Further, the sensor can be mounted ontop of the robotic device, perhaps on top of a sensor mast or some otherfixture to increase the height of the sensor and improve the sensor'sline of sight. The markers can then be arranged at the height of thesensor so the sensor can detect the markers. As such, the markers can bearranged in a two-dimensional marker plane that substantially alignswith the two-dimensional sensor plane. However, when the sensor mastdeviates from a substantially vertical orientation, the sensor plane canbecome tilted relative to the marker plane, thereby resulting in lessprecise estimates of position and orientation of the robotic device.

For instance, when the sensor is properly aligned (e.g., when thetwo-dimensional sensor plane is parallel to the horizontal markerplane), sensor data can accurately indicate positions of the markersrelative to the sensor within the horizontal marker plane, and therobotic device can accurately localize its position within the map ofthe environment. However, when the sensor is improperly aligned (e.g.,when the two-dimensional sensor plane is vertically tilted relative tothe horizontal marker plane), the sensor data can indicate that themarkers are farther away from the sensor than they actually are, and therobotic device may not be able to accurately localize its positionwithin the map of the environment using this sensor data. In someexamples, even small angular deviations of the sensor mast can beproblematic, especially if the detected markers are far away and/or ifthe sensor mast is particularly long, as the error can be magnified bythese long distances.

Accordingly, it can be desirable to determine whether the sensor planeis properly aligned with the horizontal marker plane. In order to do so,the robotic device can be provided with a map of the horizontal markerplane that indicates predefined mapped positions of the markers. Alocalized position of the robotic device within the map can then bedetermined. The robotic device can localize its position in a variety ofways, such as by using a global positioning system (GPS) or bytriangulating itself using the detected markers as discussed above. Ifthe robotic device uses detected markers for localizing itself, therecan be some error introduced into the localization process if the sensorplane is not properly aligned with the marker plane. However, thetriangulation process can be robust enough that, with enough detectedmarkers, the robotic device can be accurately localized even with someinaccuracy in individual marker detections.

Based on the predefined mapped positions of the markers and thelocalized position of the robotic device, the robotic device can thendetermine an expected position of each marker relative to the roboticdevice. Thus, when the robotic device receives sensor data anddetermines measured positions of the markers relative to the roboticdevice, these measured positions can be compared to the expectedpositions to determine whether the sensor is properly aligned. Inparticular, such a comparison can involve determining a first mappedtwo-dimensional vector that extends between the mapped positions of twomarkers and determining a second measured two-dimensional vector thatextends between the measured positions of the two markers.

The robotic device can then subtract the mapped and measured vectors todetermine a two-dimensional difference vector, and the magnitude of thedifference vector can determine how tilted the sensor plane is relativeto the horizontal marker plane. For instance, if the sensor plane is nottilted or only minimally tilted relative to the horizontal marker plane,then the mapped and measured vectors can be equal or significantly closeto being equal, such that the difference vector has a magnitude equal orsubstantially close to zero. On the other hand, if the sensor plane issignificantly tilted relative to the horizontal marker plane, then themapped and measured vectors can be significantly different, such thatthe difference vector has a substantially non-zero magnitude.

Further, because the difference vector is a two-dimensional vector inthe horizontal marker plane, the x- and y-components of the differencevector can, in some situations, be used to determine a tilt of thesensor plane relative to the x- and y-axes of the horizontal markerplane.

In addition to detecting whether the sensor is tilted and an extent ofthe tilt angle, the methods and systems disclosed herein can be used todetermine a cause of the sensor tilt. There are various situations thatmay result in the sensor being improperly aligned with the horizontalmarker plane. For instance, the sensor can be improperly mounted to therobotic device, the sensor can be mounted to a mast that is oscillatingback and forth, or the robotic device itself can be tilted due to anuneven ground surface or due to the robotic device being equipped with aheavy load.

Accordingly, the present disclosure further discusses methods andsystems for detecting these causes based on various characteristics ofone or more difference vectors determined by the robotic device. Forinstance, the robotic device can determine multiple difference vectors(e.g., based on multiple different pairs of markers and/or based onmultiple measurements of a single pair of markers over a time period),and the robotic device can identify a cause of the sensor tilt bycomparing the multiple difference vectors to one another. Further, oneor more difference vectors determined by the robotic device can becompared to one or more difference vectors determined by one or moreother robotic devices, and, based on this comparison, the robotic devicecan identify a cause of the sensor tilt.

In some examples, the robotic device can determine, for each detectedmarker, difference vectors between that detected marker and all othermarkers (both detected or otherwise known from predefined mapping). Therobotic device can then determine covariance matrices for the determineddifference vectors as well as a variance for the magnitudes of thedifference vectors. If the variance deviates significantly from zero,then this can indicate that the sensor plane is tilted relative to themarker plane.

Further, an improperly mounted sensor can result in a fixed offsetbetween the sensor plane and the marker plane, such that the determineddifference vectors can be linearly transformed as the robotic devicenavigates throughout the environment. As such, eigenvalues andeigenvectors of the covariance matrices can be used to determine whetherthe sensor is improperly mounted.

Conversely, an oscillating sensor can result in a time-varying offsetbetween the sensor plane and the marker plane, such that the differencevectors measured by the robotic device can significantly vary over ashort period of time. As such, the robotic device can determine whetherthe sensor is oscillating based on the time-varying characteristics ofthe difference vectors. These and other examples will be discussed infurther detail below.

II. Localization of a Robotic Device within a Marker System

FIG. 1 depicts an environment 100 through which a robotic device 102 cannavigate, in accordance with an example embodiment. The environment 100can be an indoor environment (e.g., part or all of a warehouse, afactory, office space), an outdoor environment (e.g., part or all of aparking lot, road network, park, farmland), or a combinationindoor/outdoor environment (e.g., a building and an associated parkinglot and/or road network). Many other example environments are possibleas well.

The environment 100 can include a number of markers 104 a, 104 b, 104 carranged at various positions within the environment 100. While FIG. 1depicts three markers, in other examples there can be additional orfewer markers. The markers 104 a, 104 b, 104 c can be detected byvarious sensors. For instance, in the present examples, the markers willbe discussed as being suited for optical detection. As such, the markers104 a, 104 b, 104 c can include a retroreflective material forreflecting light from a laser scanner. However, other examples arepossible as well. For instance, the markers can be detectable byultrasonic sensors, motion capture sensors, infrared sensors, or thelike.

The markers 104 a, 104 b, 104 c can take on various shapes and forms.For instance, the markers can be spherical, cylindrical, planar,cubical, or the like, and can be mounted to various structures withinthe environment 100 or can stand on their own. As shown, the markers 104a, 104 b, 104 c are cylindrical markers mounted on posts. However, otherexamples are possible as well.

The robotic device 102 can be any one or more steered vehicle(s) capableof following a path. For example, the robotic device 102 can be a forktruck, such as any Occupational Safety and Health Administration (OSHA)Class 1 or Class 3 powered industrial truck. The robotic device 102 caninclude onboard software and/or hardware to facilitate localization andnavigation of the robotic device 102 within the environment 100. Forinstance, the robotic device 102 can include one or more onboardsensors, such as one or more navigation lasers, laser scanners, cameras,and/or other sensors. The laser scanners can be used to localize therobotic device using reflector-based localization and can include one ormore laser scanners provided by SICK AG of Waldkirch, Germany, HOKUYOAUTOMATIC CO. LTD of Osaka, Japan, and/or KEYENCE CORPORATION of Osaka,Japan.

In practice, the robotic device 102 can include a laser scanner 106 fordetecting the markers 104 a, 104 b, 104 c. The laser scanner 106 can beconfigured to scan a two-dimensional area for markers. For instance, thelaser scanner 106 can scan a two-dimensional area by rotating within atwo-dimensional sensor plane as indicated by the arrow 110. The laserscanner 106 can perform full, 360-degree rotations or can performlimited rotations covering a smaller two-dimensional area, such as a270-degree scan or a 180-degree scan. Other examples are possible aswell.

As shown in FIG. 1, the laser scanner 106 can be coupled to a mast 108of the robotic device 102. The mast 108 can extend vertically from therobotic device 102, thereby improving the line of sight of the laserscanner 106 by reducing interference from objects closer to the ground.With the laser scanner 106 elevated above the robotic device 102, themarkers 104 a, 104 b, 104 c can be arranged at a particular height h₁above the ground, such that the centers of the markers are positioned atapproximately the same height as the laser scanner 106. As such, themarkers can be arranged in a horizontal marker plane substantiallyparallel to the ground. Further, the markers 104 a, 104 b, 104 cthemselves can have a particular height h₂ so the laser scanner 106 canstill detect the markers even if the markers are not perfectly alignedwith the laser scanner 106 or if the laser scanner 106 becomes tilted.

While scanning, the laser scanner 106 can emit light (e.g., in the formof a laser beam) and can detect any light that is reflected back towardthe laser scanner 106. Based on various characteristics of the reflectedlight (e.g., based on an intensity and a time-of-flight of the detectedlight), the laser scanner 106 or some other computing device canidentify the presence of a marker and the location of the markerrelative to the laser scanner 106. As shown, for instance, the laserscanner can emit light along path 112 a. The light can reflect offmarker 104 a and return to the laser scanner 106 where the reflectedlight is detected by the laser scanner 106. Based on an intensity of thereflected light, the laser scanner 106 can determine that marker 104 ais located along path 112 a, and, based on a time-of-flight of thereflected light, the laser scanner 106 can determine a distance ofmarker 104 a from the laser scanner 106 along path 112 a. The laserscanner 106 can employ similar processes to detect marker 104 b alongpath 112 b and marker 104 c along path 112 c.

Turning next to FIG. 2A, a map 200 of the horizontal marker plane isillustrated, in accordance with an example embodiment. As noted above,the markers can be positioned in a horizontal plane within theenvironment 100. The map 200 can then indicate the positions of themarkers in the horizontal plane by associating two-dimensionalcoordinates with each marker. The two-dimensional coordinates can be inunits of distance (e.g., meters, centimeters, etc.) or they can be basedon some arbitrary unit. As shown, for instance, the map 200 indicates anx-coordinate and a y-coordinate for markers A, B, C, D, E, F, and G.These two-dimensional coordinates can be determined and associated witheach marker in various ways. For example, when arranging the markerswithin the environment 100, the markers can be positioned at locationshaving predefined or otherwise known coordinates. Alternatively, thecoordinates of the markers can be determined by performing one or morehigh accuracy scans of the environment to determine the positions of themarkers within the horizontal marker plane. Other examples are possibleas well.

The map 200 of the horizontal marker plane can be provided to therobotic device 102, and the robotic device 102 can localize its positionand/or a position of the laser scanner 106 relative to the map 200 ofthe horizontal marker plane.

In some examples, the robotic device 102 can determine a position of thelaser scanner 106 relative to the map 200 based on light detected by thelaser scanner 106 during a scan. As discussed above, for instance, thelaser scanner 106 can scan a two-dimensional sensor plane by emittingand detecting light in a rotating pattern.

FIG. 2B illustrates the map 200 of the horizontal marker plane thatshows detections of markers by the laser scanner 106. As shown, thelaser scanner 106 can detect marker A by emitting and detecting lightalong path a; the laser scanner 106 can detect marker B by emitting anddetecting light along path b; the laser scanner 106 can detect marker Cby emitting and detecting light along path c; the laser scanner 106 candetect marker D by emitting and detecting light along path d; the laserscanner 106 can detect marker E by emitting and detecting light alongpath e; the laser scanner 106 can detect marker F by emitting anddetecting light along path f, and the laser scanner 106 can detectmarker G by emitting and detecting light along path g.

Given the locations of the markers in the horizontal marker plane, alocation and pose of the laser scanner 106 and/or robotic device 102relative to the horizontal marker plane can be computed usingtriangulation, so long as the laser scanner 106 can detect at leastthree of the markers. To do so, the robotic device 102 can establish anassociation between any detected markers and the known mapped markershaving known locations in the horizontal marker plane. Then, once theknown locations are associated with the detected markers, the roboticdevice 102 can localize itself relative these known locations and thusdetermine a location of the robotic device 102 relative to thehorizontal marker plane. Further, the robotic device 102 can use priorlocation data to determine a pose of the robotic device 102.

In practice, the robotic device 102 can determine, based on thereflected light along paths a-g, a position (e.g., a distance and adirection) of each marker A-G relative to the laser scanner 106. Oncethe robotic device 102 determines the relative positions of the markers,the robotic device can determine a position of the laser scanner 106within the map 200. By way of example, the markers A-G can be in ascattered arrangement, such that the positions of the markers do notform a repeating positional pattern. That way, for any given position ofthe laser scanner 106, the measured positions of the markers A-G cancorrespond to a distinct position of the laser scanner 106 relative tothe map 200. Accordingly, using the measured positions of the markersA-G, the robotic device 102 can determine two-dimensional sensorcoordinates (x_(s), y_(s)) of the laser scanner 106 within the map 200of the horizontal marker plane, as well as an orientation or headingangle of the robotic device 102.

In some examples, the robotic device 102 can use various other methodsor devices to localize the laser scanner within the map 200. Forinstance, the robotic device 102 can include additional sensors, such asa motion capture camera or one or more additional laser scannersconfigured to localize the robotic device 102. These additional sensorscan be configured to detect the same markers A-G or can instead beconfigured to detect a separate set of markers. In any case, the roboticdevice 102 can use these additional sensors to localize itself relativeto the detected markers and determine the two-dimensional sensorcoordinates (xs, ys) of the laser scanner 106 within the map 200 of thehorizontal marker plane. Moreover, once initial sensor coordinates ofthe laser scanner 106 are determined, the robotic device 102 can usedead reckoning techniques (e.g., based on a detected wheel speed anddirection of travel and/or by using an inertial measurement unit (IMU))to determine subsequent sensor coordinates. Other examples are possibleas well.

III. Measurement of Sensor Orientation Characteristics

Once the robotic device 102 has determined sensor coordinates of thelaser scanner 106 relative to the map 200 of the horizontal markerplane, the robotic device 102 can then determine various orientationcharacteristics of the laser scanner 106 relative to the horizontalmarker plane. The robotic device 102 can make such determinations basedon the determined sensor coordinates and measured positions of some orall of the markers relative to the laser scanner 106.

In one example, given that a position and heading of the robotic device102 is known (e.g., using triangulation techniques as discussed above)and that the laser scanner 106 is located at sensor coordinates (x_(s),y_(s)) as indicated in FIG. 2B, the robotic device 102 can determine anorientation of the laser scanner 106 by measuring the positions ofmarkers B and F relative to the laser scanner 106 and comparing themeasured positions to the mapped positions of markers B and F shown inFIG. 2A.

Referring to FIG. 3, a side view of the robotic device 102 shows therobotic device 102 positioned at (x_(s), y_(s)) between markers B and F.The laser scanner 106 can emit light towards each of the markers anddetect the reflected light from the markers. Based on the detectedreflected light, the robotic device 102 can determine positions ofmarkers B and F relative to the laser scanner 106 and, thus, relative tothe sensor coordinates (x_(s), y_(s)). Then, based on these determinedrelative positions, the robotic device 102 can determine measuredcoordinates of the markers B and F. These measured coordinates can bedenoted as (x_(B′), y_(B′)) and (x_(F′), y_(F′)).

FIG. 4A illustrates the map 200 of the horizontal marker plane with themeasured coordinates of markers detected by the robotic device 102displayed alongside the mapped coordinates of the markers, in accordancewith an example embodiment. The values of the measured coordinates,including measured coordinates (x_(B′), y_(B′)) and (x_(F′), y_(F′)),can be affected by an orientation of the laser scanner 106, and/or anorientation of the two-dimensional sensor plane scanned by the laserscanner 106, relative to the horizontal marker plane 302. For instance,as shown in FIG. 3, when the laser scanner 106 is aligned with thehorizontal marker plane (i.e., when the sensor plane is parallel to thehorizontal marker plane), the laser scanner 106 measures the relativepositions of markers B and F along a path within the horizontal markerplane 302. If, however, the laser scanner 106 is vertically tilted withrespect to the horizontal marker plane, then the laser scanner 106measures the relative positions of markers B and F along a verticallytilted path, such as the shown tilted path 304.

Because the tilted path 304 can have a greater length than the path inthe horizontal marker plane 302, the markers B and F can appear fartheraway from the laser scanner 106 when the laser scanner 106 is verticallytilted relative to the horizontal marker plane. As a result, thedetermined measured coordinates (x_(B′), y_(B′)) and (x_(F′), y_(F′)) ofmarkers B and F can be farther away from the sensor coordinates (x_(s),y_(s)) than the mapped coordinates (x_(B), y_(B)) and (x_(F), y_(F)) ofmarkers B and F, as shown in FIG. 4A. Accordingly, in some examples, therobotic device 102 can determine that the laser scanner 106 isvertically tilted with respect to the horizontal marker plane based on adifference between the measured coordinates and the mapped coordinates.

FIGS. 4B-4D illustrate how the robotic device 102 can determine that thelaser scanner 106 is vertically tilted with respect to the horizontalmarker plane based on a difference between the measured coordinates andthe mapped coordinates, in accordance with an example embodiment. Asshown in FIG. 4B, the robotic device 102 can subtract the mappedcoordinates (x_(B), y_(B)) and (x_(F), y_(F)) to determine a mappedvector V_(BF) 410 that extends between mapped marker positions B and F.As shown in FIG. 4C, the robotic device 102 can further subtract themeasured coordinates (x_(B′), y_(B′)) and (x_(F′), y_(F′)) to determinea measured vector V_(B′F′) 420 that extends between measured markerpositions B′ and F′. Based on a difference between the mapped vectorV_(BF) and the measured vector V_(B′F′), the robotic device 102 candetermine an orientation of the laser scanner 106 relative to thehorizontal marker plane.

For instance, as noted above, if the laser scanner 106 is aligned withthe horizontal marker plane 302, then the determined measuredcoordinates (x_(B′), y_(B′)) and (x_(F′), y_(F′)) of markers B and Fwill equal the mapped coordinates (x_(B), y_(B)) and (x_(F), y_(F)), andthe measured vector V_(B′F′) will equal the mapped vector V_(BF). On theother hand, if the laser scanner 106 is vertically tilted with respectto the horizontal marker plane 302, then the determined measuredcoordinates (x_(B′), y_(B′)) and (x_(F′), y_(F′)) of markers B and Fwill not equal the mapped coordinates (x_(B), y_(B)) and (x_(F), y_(F)),and the measured vector V_(B′F′) will not equal the mapped vectorV_(BF). Further, a greater tilt of the laser scanner 106 can result in agreater difference between the measured coordinates and mappedcoordinates, as well as the measured vector and the mapped vector.

Accordingly, the robotic device can determine whether the laser scanner106 is tilted and/or an extent of the tilt angle based on a differencevector in the horizontal marker plane. The difference vector representsthe difference between a vector that connects the mapped coordinates oftwo markers and a vector that connects the measured coordinates of thetwo markers. For example, as shown in FIG. 4D, the robotic device 102can subtract the mapped vector V_(BF) from the measured vector V_(B′F′)to determine the difference vector 430. If the determined differencevector is a null vector (or a vector having a magnitude significantlyclose to zero), then the robotic device 102 can determine that the laserscanner 106 is aligned with the horizontal marker plane 302. If thedetermined difference vector has a non-zero magnitude (or a magnitudesignificantly larger than zero), then the robotic device 102 candetermine that the laser scanner 106 is vertically tilted with respectto the horizontal marker plane 302. Further, the robotic device 102 candetermine an extent of the vertical tilt based on the magnitude of thedifference vector. For instance, a larger magnitude can indicate agreater extent of tilt.

In some examples, the robotic device 102 can determine an angle at whichthe laser scanner 106 is tilted relative to the horizontal marker plane302. Referring to FIG. 3, for instance, the robotic device 102 candetermine a first distance d₁ between the laser scanner 106 and marker Balong the horizontal marker plane 302 and a second distance d₂ betweenthe laser scanner 106 and marker B along the tilted path 304. Therobotic device 102 can determine the first distance d₁ by subtractingthe sensor coordinates (x_(s), y_(s)) from the mapped coordinates(x_(B), y_(B)) of marker B, and the robotic device 102 can determine thesecond distance d₂ by subtracting the sensor coordinates (x_(s), y_(s))from the measured coordinates (x_(B′), y_(B′)) of marker B. Once d₁ andd₂ are known, the tilt angle θ can be determined using the law ofcosines.

In the above examples, the robotic device 102 is positioned betweenmarkers B and F, which can be aligned along the y-axis of the horizontalmarker plane, as shown by FIG. 2B. As such, the above operations can beuseful for determining a tilt angle of the laser scanner 106 withrespect to the y-axis. The tilt angle of the laser scanner 106 withrespect to the y-axis can be referred to as a pitch angle of the laserscanner 106. In order to also determine a tilt of the laser scanner 106with respect to the x-axis of the horizontal marker plane, the roboticdevice 102 can perform similar operations with respect to markers D andE, which can be aligned along the x-axis of the horizontal marker plane,as shown by FIG. 2B. The tilt angle of the laser scanner 106 withrespect to the x-axis can be referred to as a roll angle of the laserscanner 106. To determine the roll angle, the robotic device 102 candetermine measured coordinates (x_(D′), y_(D′)), (x_(E′), y_(E′)) andmapped coordinates (x_(D), y_(D)), (x_(E), y_(E)) of markers D and E aswell as a measured vector V_(D′E′) and a mapped vector V_(DE). Then,based on a vector difference between the measured vector and the mappedvector as discussed above, the robotic device 102 can determine a tiltof the laser scanner 106 with respect to the x-axis of the horizontalmarker plane.

In the above examples, the robotic device 102 is positioned between thevarious detected markers (i.e., between markers B and F, and betweenmarkers D and E). However, in many cases, the robotic device 102 mightnot be positioned directly between two markers. As such, the roboticdevice 102 can additionally or alternatively determine an orientation ofthe laser scanner 106 based on measured positions of markers that arenot flanking the robotic device 102.

For instance, with the laser scanner 106 positioned at (x_(s), y_(s)) asshown in FIGS. 2B and 4A, the robotic device 102 can perform some or allof the above operations to measure positions of markers A and C relativeto the laser scanner 106. Based on the relative measured positions ofmarkers A and C, the robotic device 102 can determine measuredcoordinates (x_(A′), y_(A′)), (x_(C′), y_(C′)) of markers A and C. Usingthe measured coordinates, the robotic device 102 can determine ameasured vector V_(A′C′) between (x_(A′), y_(A′)) and (x_(C′), y_(C′)),and, using the mapped coordinates, the robotic device 102 can determinea mapped vector V_(AC) between (x_(A), y_(A)) and (x_(C), y_(C)).Further, the robotic device 102 can determine a difference vector bysubtracting V_(AC) from V_(A′C′). Based on the determined differencevector, the robotic device 102 can determine whether the laser scanner106 is vertically tilted with respect to the horizontal marker plane. Inparticular, a non-zero difference vector can indicate that the laserscanner 106 is vertically tilted, while a null difference vector canindicate that the laser scanner 106 is not tilted.

In this example, because markers A and C are not aligned along thex-axis or y-axis of the horizontal marker plane, and because the roboticdevice 102 is not positioned directly between markers A and C, anyvertical tilt of the laser scanner 106 with respect to either or both ofthe x-axis and y-axis of the horizontal marker plane can result in anon-zero difference vector. Thus, in such a situation, the roboticdevice 102 can detect vertical tilt of the laser scanner 106 withrespect to either or both of the x-axis and y-axis based on thedifference vector having a non-zero magnitude or a magnitudesignificantly larger than zero.

In some examples, the robotic device 102 can be configured to performsome or all of the above operations multiple times over. By way ofexample, for a particular marker, the robotic device 102 can determinedifference vectors based on the measured and mapped coordinates of theparticular marker and of every other detected marker in the environment100. The robotic device 102 can further repeat these operations forevery other detected marker in the environment 100, such that, for eachdetected marker, the robotic device 102 can determine difference vectorsbased on the measured and mapped coordinates of that marker and of everyother detected marker. Even further, the robotic device 102 can repeatsome or all of these operations for the same set of markers over aperiod of time and/or as the robotic device 102 navigates throughout theenvironment 100. This can allow the robotic device 102 to determine acause of the vertical tilt of the laser scanner 106, as discussed inmore detail below. Additionally, one or more other robotic devices inthe environment 100 can also perform any or all of the above operations,and the difference vectors from the multiple robotic devices can becompared to determine a cause of the vertical tilt of the laser scanner106, as discussed in more detail below.

The laser scanner 106, and thus the two-dimensional sensor plane scannedby the laser scanner 106, can be vertically tilted with respect to thehorizontal marker plane due to a variety of causes. For instance, asshown in FIG. 5A, the laser scanner 106 can be improperly mounted to therobotic device 102, such that the two-dimensional sensor plane 502 isoriented at a fixed angle θ relative to the horizontal marker plane 302.In such a scenario, because the laser scanner 106 is constantly tiltedwith respect to the horizontal marker plane 302, the difference vectorsdetermined by the robotic device 102 over time and/or as the roboticdevice navigates through the environment 100 can have a somewhatconsistent non-zero magnitude.

By way of example, while the robotic device 102 is located at aparticular location (x_(s), y_(s)), the robotic device 102 can determinea number of difference vectors, as discussed above, based on themeasured and mapped locations of markers A and C (or any other detectedmarkers). If the determined difference vectors each have a significantlysimilar non-zero magnitude and/or significantly similar non-zero x- andy-values, then the robotic device 102 can determine that the laserscanner 106 is improperly mounted to the robotic device 102.

Similarly, while the robotic device 102 navigates through theenvironment 100, the robotic device 102 can determine, at variouslocations, a number of difference vectors, as discussed above, based onthe measured and mapped locations of markers A and C (or any otherdetected markers). Again, if the determined difference vectors each havea significantly similar non-zero magnitude and/or significantly similarnon-zero x- and y-values, then the robotic device 102 can determine thatthe laser scanner 106 is improperly mounted to the robotic device 102.

Further, in situations where the environment 100 includes multiplerobotic devices configured to scan for markers and determine differencevectors, the robotic device 102 (or some other computing device) candetermine that the laser scanner 106 is improperly mounted to therobotic device 102 by comparing one or more difference vectorsdetermined by the robotic device 102 to one or more difference vectorsdetermined by other robotic devices. For instance, if the robotic device102 consistently determines difference vectors that have a largermagnitude than difference vectors determined by the other roboticdevices, then this can indicate that the laser scanner 106 is improperlymounted to the robotic device 102.

In some examples, the robotic device 102 can be configured to transporta load through the environment 100. For instance, the robotic device 102can be a fork truck or the like. As such, a weight of the load can causethe robotic device 102 (and also the laser scanner 106) to tilt relativeto the ground surface and thus relative to the horizontal marker plane302. Similar to situations where the laser scanner 106 is improperlymounted to the robotic device 102, the weight of the load can cause thelaser scanner 106 to be oriented at a fixed angle relative to thehorizontal marker plane 302. Accordingly, the robotic device 102 canemploy similar methods to those discussed above in the context of FIG.5A to determine that the load is causing the robotic device 102 to tiltrelative to the ground surface.

FIG. 5B next illustrates another cause for the laser scanner 106 beingvertically tilted relative to the horizontal marker plane 302. As shown,the laser scanner 106 (and perhaps the mast 108) can oscillate back andforth as indicated by arrow 504. Such oscillations may result from avariety of causes, such as vibrations of the robotic device 102, acollision between the robotic device 102 and some other object, abruptchanges in the velocity of the robotic device 102, or the like.

The laser scanner 106 can oscillate between a first position 510 and asecond position 520. In the first position 510, the two-dimensionalsensor plane can be oriented in a first orientation 512, and, in thesecond position 520, the two-dimensional sensor plane can be oriented ina second orientation 522. Thus, when the laser scanner 106 oscillatesbetween the first position 510 and the second position 520, thetwo-dimensional sensor plane oscillates between the first orientation512 and the second orientation 522.

As the two-dimensional sensor plane oscillates between the firstorientation 512 and the second orientation 522, the detected markers canappear farther or nearer to the laser scanner 106 depending on theorientation of the sensor plane. Consequently, the measured positions ofthe detected markers (and thus the difference vector based on themeasured and mapped positions of the detected markers) can varydepending on the orientation of the sensor plane. Accordingly, in someexamples, the robotic device 102 can be configured to determine a numberof difference vectors over a period of time (perhaps over a short periodof time to account for rapid oscillations) for a particular set ofdetected markers. If the magnitudes of the determined difference vectorsvary significantly over the period of time, then the robotic device 102can responsively determine that the laser scanner 106 is oscillatingrelative to the horizontal marker plane. For instance, the roboticdevice 102 can determine that the laser scanner 106 is oscillating ifthe magnitudes of the difference vectors experience a significantdecrease followed by a significant increase over the period of time.Similarly, the robotic device 102 can determine that the laser scanner106 is oscillating if the magnitudes of the difference vectorsexperience a significant increase followed by a significant decreaseover the period of time.

FIG. 5C next illustrates another cause for the laser scanner 106 beingvertically tilted relative to the horizontal marker plane 302. As shown,the robotic device 102 can be configured to traverse a ground surface530 of the environment 100, and the ground surface 530 can include oneor more uneven surfaces 532. For instance, the uneven surface 532 can bea ramp, a speed bump, an imperfection such as a pothole, a misplacedobject, or the like. In any case, when navigating through theenvironment 100, the robotic device 102 can drive over (or otherwisecoincide with) the uneven surface 532.

When driving over the uneven surface 532, part or all of the roboticdevice 102 (including the laser scanner 106) can become verticallytilted relative to the horizontal marker plane 302, such that thetwo-dimensional sensor plane 534 is also vertically tilted relative tothe horizontal marker plane 302. While vertically tilted, the roboticdevice 102 can determine one or more difference vectors based onmeasured positions of markers, as discussed above, and because thetwo-dimensional sensor plane 534 is vertically tilted relative to thehorizontal marker plane 302, the determined difference vectors can havea non-zero magnitude.

In order to determine whether a non-zero difference vector is caused byan uneven ground surface, such as uneven surface 532, the robotic device102 (or some other computing device) can refer to difference vectorsgenerated by one or more other robotic devices. For instance, as notedabove, the environment 100 can include a number of robotic devicesnavigating through the environment 100 and generating difference vectorsat various locations throughout the environment 100. Accordingly, if athreshold number of robotic devices generate non-zero difference vectorsat or near a particular location within the environment 100, then thiscan indicate that the ground surface at that particular location isuneven. On the other hand, if only a single robotic device generates asignificantly non-zero difference vector at or near the particularlocation, then this can indicate that the problem is with the singlerobotic device (e.g., due to sensor oscillation or a mounting error)rather than with the ground surface at that particular location.

Further, in some examples, when the robotic device 102 is tilted due toan uneven ground surface, the robotic device 102 can be configured todetermine a slope of the ground surface by determining an angle at whichthe two-dimensional sensor plane is vertically tilted, as discussedabove in the context of FIG. 3.

IV. Computing Device Architecture

FIG. 6 is a functional block diagram of a computing device 600 (e.g.,system), in accordance with an example embodiment. In particular, thecomputing device 600 shown in FIG. 6 can be configured to perform one ormore functions related to the robotic device 102 and/or method 700. Thecomputing device 600 can include a user interface module 602, anetwork-communication interface module 604, one or more processors 606,data storage 608, one or more sensors 610, and one or more actuators612, all of which may be linked together via a system bus, network, orother connection mechanism 614. In some embodiments, the computingdevice 600 can be configured to act as part or all of a warehousecontrol system.

The user interface module 602 can be operable to send data to and/orreceive data from external user input/output devices. For example, theuser interface module 602 can be configured to send and/or receive datato and/or from user input devices such as a keyboard, a keypad, a touchscreen, a computer mouse, a track ball, a joystick, a camera, a voicerecognition module, and/or other similar devices. The user interfacemodule 602 can also be configured to provide output to user displaydevices, such as one or more cathode ray tubes (CRT), liquid crystaldisplays, light emitting diodes (LEDs), displays using digital lightprocessing (DLP) technology, printers, light bulbs, and/or other similardevices, either now known or later developed. The user interface module602 can also be configured to generate audible output(s), such as aspeaker, speaker jack, audio output port, audio output device,earphones, and/or other similar devices.

The network-communications interface module 604 can include one or morewireless interfaces 616 and/or one or more wireline interfaces 618 thatare configurable to communicate via a network. The wireless interfaces616 can include one or more wireless transmitters, receivers, and/ortransceivers, such as a Bluetooth™ transceiver, a Zigbee® transceiver, aWi-Fi™ transceiver, a WiMAX™ transceiver, and/or other similar type ofwireless transceiver configurable to communicate via a wireless network.The wireline interfaces 618 can include one or more wirelinetransmitters, receivers, and/or transceivers, such as an Ethernettransceiver, a Universal Serial Bus (USB) transceiver, or similartransceiver configurable to communicate via a twisted pair wire, acoaxial cable, a fiber-optic link, or a similar physical connection to awireline network.

In some embodiments, the network communications interface module 604 canbe configured to provide reliable, secured, and/or authenticatedcommunications. For each communication described herein, information forensuring reliable communications (i.e., guaranteed message delivery) canbe provided, perhaps as part of a message header and/or footer (e.g.,packet/message sequencing information, encapsulation header(s) and/orfooter(s), size/time information, and transmission verificationinformation such as CRC and/or parity check values). Communications canbe made secure (e.g., be encoded or encrypted) and/or decrypted/decodedusing one or more cryptographic protocols and/or algorithms, such as,but not limited to, Data Encryption Standard (DES), Advanced EncryptionStandard (AES), an Rivest-Shamir-Adelman (RSA) algorithm, aDiffie-Hellman algorithm, a secure sockets protocol such as SecureSockets Layer (SSL) or Transport Layer Security (TLS), and/or DigitalSignature Algorithm (DSA). Other cryptographic protocols and/oralgorithms can be used as well or in addition to those listed herein tosecure (and then decrypt/decode) communications.

The processors 606 can include one or more general purpose processors,and/or one or more special purpose processors (e.g., digital signalprocessors, graphics processing units, application specific integratedcircuits, etc.). The processors 606 can be configured to executecomputer-readable program instructions 620 that are contained in thedata storage 608 and/or other instructions as described herein.

The data storage 608 can include one or more computer-readable storagemedia that can be read and/or accessed by at least one of processors606. The one or more computer-readable storage media can includevolatile and/or non-volatile storage components, such as optical,magnetic, organic or other memory or disc storage, which can beintegrated in whole or in part with at least one of the processors 606.In some embodiments, the data storage 608 can be implemented using asingle physical device (e.g., one optical, magnetic, organic or othermemory or disc storage unit), while in other embodiments, the datastorage 608 can be implemented using two or more physical devices.

The data storage 608 can include computer-readable program instructions620 and perhaps additional data. In some embodiments, the data storage608 can additionally include storage required to perform at least partof the herein-described methods and techniques and/or at least part ofthe functionality of the devices and networks.

In some embodiments, the computing device 600 can include one or moresensors 610. The sensor(s) 610 can be configured to measure conditionsin an environment for the computing device 600 and provide data aboutthat environment; e.g., environment 100. For example, the sensor(s) 610can include one or more of: (i) an identification sensor to identifyother objects and/or devices, such as, but not limited to, a RadioFrequency Identification (RFID) reader, proximity sensor,one-dimensional barcode reader, two-dimensional barcode (e.g., QuickResponse (QR) code) reader, and a laser tracker, where theidentification sensor(s) can be configured to read identifiers, such asRFID tags, barcodes, QR codes, and/or other devices and/or objectconfigured to be read and provide at least identifying information; (ii)a location sensor to measure locations and/or movements of the computingdevice 600, such as, but not limited to, a gyroscope, an accelerometer,a Doppler sensor, a Global Positioning System (GPS) device, a sonarsensor, a radar device, a laser-displacement sensor, and a compass;(iii) an environmental sensor to obtain data indicative of anenvironment of the computing device 600, such as, but not limited to, aninfrared sensor, an optical sensor, a light sensor, a camera, abiosensor, a capacitive sensor, a touch sensor, a temperature sensor, awireless sensor, a radio sensor, a movement sensor, a microphone, asound sensor, an ultrasound sensor, and/or a smoke sensor; and (iv) aforce sensor to measure one or more forces (e.g., inertial forces and/orG-forces) acting about the computing device 600, such as, but notlimited to one or more sensors that measure: forces in one or moredimensions, torque, ground force, friction, and/or a zero moment point(ZMP) sensor that identifies ZMPs and/or locations of the ZMPs. Manyother examples of sensor(s) 610 are possible as well.

The computing device 600 can include one or more actuators 612 thatenable the computing device 600 to initiate movement. For example, theactuator(s) 612 can include or be incorporated with robotic jointsconnecting robotic limbs to a robotic body. For example, the actuator(s)612 can include respective robotic hip and robotic shoulder jointsconnecting respective robotic legs and arms to the robotic body.Further, the actuator(s) 612 can include respective robotic knee jointsconnecting respective portions of the robotic legs (e.g., robotic thighsand robotic calves) and elbow joints connecting portions of the roboticarms (e.g., robotic forearms and upper arms). Yet further, theactuator(s) 612 can include respective robotic ankle joints connectingthe robotic legs to robotic feet and respective robotic wrist jointsconnecting the robotic arms to robotic hands. In addition, theactuator(s) 612 can include motors for moving the robotic limbs. Assuch, the actuator(s) 612 can enable mobility of the computing device600. Many other examples of actuator(s) 612 are possible as well.

V. Example Methods of Operation

FIG. 7 is a flowchart of a method 700, in accordance with an exampleembodiment. The method 700 can be executed by a computing device, suchas robotic device 102 and/or computing device 600. The method 700 canbegin at block 710, where a computing device can receive a map of ahorizontal marker plane that includes mapped positions of a first markerand a second marker arranged in the horizontal marker plane, such asdiscussed above at least in the context of FIGS. 2A, 2B, and 4A.

At block 720, the computing device can receive, from a sensor configuredto scan a two-dimensional sensor plane, sensor data indicative ofpositions of the first and second markers relative to the sensor, suchas discussed above at least in the context of FIGS. 1, 2B, 3, and 5A-5C.

At block 730, the computing device can determine measured positions ofthe first and second markers relative to the map based on the sensordata and a current position of the sensor relative to the map, such asdiscussed above at least in the context of FIGS. 2B, 3, and 4A.

At block 740, the computing device can determine a difference vectorbetween a first vector that connects the mapped positions of the firstand second markers and a second vector that connects the measuredpositions of the first and second markers, such as discussed above atleast in the context of FIGS. 2B, 3, and 4A-4D.

At block 750, the computing device can determine, based on thedetermined distance vector, an orientation of the two-dimensional sensorplane relative to the horizontal marker plane, such as discussed aboveat least in the context of FIGS. 3 and 5A-5C.

In some embodiments, method 700 can further include: after receiving thesensor data from the sensor at a first time, receiving second sensordata indicative of positions of the first and second markers relative tothe sensor at a second time; determining, based on the second sensordata, a second orientation of the two-dimensional sensor plane relativeto the horizontal marker plane; determining, based on a similaritybetween the determined orientation of the two-dimensional sensor planerelative to the horizontal plane and the determined second orientationof the two-dimensional sensor plane relative to the horizontal plane,that the sensor is improperly mounted to the first robotic device; anddetermining, based on at least one of the determined orientation and thedetermined second orientation, a mounting angle of the sensor relativeto the horizontal plane, such as discussed above at least in the contextof FIG. 5A.

In other embodiments, method 700 can further include: after receivingthe sensor data from the sensor at a first time, receiving second sensordata indicative of positions of the first and second markers relative tothe sensor at a second time; determining, based on the second sensordata, a second orientation of the two-dimensional sensor plane relativeto the horizontal marker plane; determining, based on a differencebetween the determined orientation of the two-dimensional sensor planerelative to the horizontal plane and the determined second orientationof the two-dimensional sensor plane relative to the horizontal plane,that the sensor is moving relative to the horizontal marker plane; afterreceiving the second sensor data from the sensor at the second time,receiving third sensor data indicative of positions of the first andsecond markers relative to the sensor at a third time; determining,based on the third sensor data, a third orientation of thetwo-dimensional sensor plane relative to the horizontal marker plane;and determining, based on a second difference between the determinedsecond orientation of the two-dimensional sensor plane relative to thehorizontal plane and the determined third orientation of thetwo-dimensional sensor plane relative to the horizontal plane, that thesensor is oscillating relative to the horizontal marker plane, such asdiscussed above at least in the context of FIG. 5B.

In still other embodiments, the sensor can be coupled to a first roboticdevice, wherein the sensor data is received when the first roboticdevice is at a particular location relative to the map, and method 700can further include: receiving, from a second sensor configured to scana second two-dimensional sensor plane, second sensor data indicative ofpositions of the first and second markers relative to the second sensor,wherein the second sensor is coupled to a second robotic device, andwherein the second sensor data is received when the second roboticdevice is at the particular location relative to the map; determining,based on the second sensor data, an orientation of the secondtwo-dimensional sensor plane relative to the horizontal marker plane;determining, based on a similarity between the determined orientationsof the two-dimensional sensor plane and the second two-dimensionalsensor plane relative to the horizontal plane, that a ground surface atthe particular location is uneven; and determining, based on at leastone of the determined orientations of the two-dimensional sensor planeand the second two-dimensional sensor plane relative to the horizontalplane, a slope of the ground surface at the particular location, such asdiscussed above at least in the context of FIG. 5C.

The present disclosure is not to be limited in terms of the particularembodiments described in this application, which are intended asillustrations of various aspects. Many modifications and variations canbe made without departing from its spirit and scope, as will be apparentto those skilled in the art. Functionally equivalent methods andapparatuses within the scope of the disclosure, in addition to thoseenumerated herein, will be apparent to those skilled in the art from theforegoing descriptions. Such modifications and variations are intendedto fall within the scope of the appended claims.

The above detailed description describes various features and functionsof the disclosed systems, devices, and methods with reference to theaccompanying figures. In the figures, similar symbols typically identifysimilar components, unless context dictates otherwise. The illustrativeembodiments described in the detailed description, figures, and claimsare not meant to be limiting. Other embodiments can be utilized, andother changes can be made, without departing from the spirit or scope ofthe subject matter presented herein. It will be readily understood thatthe aspects of the present disclosure, as generally described herein,and illustrated in the figures, can be arranged, substituted, combined,separated, and designed in a wide variety of different configurations,all of which are explicitly contemplated herein.

With respect to any or all of the diagrams, scenarios, and flow chartsin the figures and as discussed herein, each block and/or communicationmay represent a processing of information and/or a transmission ofinformation in accordance with example embodiments. Alternativeembodiments are included within the scope of these example embodiments.In these alternative embodiments, for example, functions described asblocks, transmissions, communications, requests, responses, and/ormessages may be executed out of order from that shown or discussed,including substantially concurrent or in reverse order, depending on thefunctionality involved. Further, more or fewer blocks and/or functionsmay be used with any of the diagrams, scenarios, and flow chartsdiscussed herein, and these diagrams, scenarios, and flow charts may becombined with one another, in part or in whole.

A block that represents a processing of information may correspond tocircuitry that can be configured to perform the specific logicalfunctions of a herein-described method or technique. Alternatively oradditionally, a block that represents a processing of information maycorrespond to a module, a segment, or a portion of program code(including related data). The program code may include one or moreinstructions executable by a processor for implementing specific logicalfunctions or actions in the method or technique. The program code and/orrelated data may be stored on any type of computer readable medium suchas a storage device including a disk or hard drive or other storagemedium.

The computer readable medium may also include non-transitory computerreadable media such as non-transitory computer-readable media thatstores data for short periods of time like register memory, processorcache, and random access memory (RAM). The computer readable media mayalso include non-transitory computer readable media that stores programcode and/or data for longer periods of time, such as secondary orpersistent long term storage, like read only memory (ROM), optical ormagnetic disks, compact-disc read only memory (CD-ROM), for example. Thecomputer readable media may also be any other volatile or non-volatilestorage systems. A computer readable medium may be considered a computerreadable storage medium, for example, or a tangible storage device.

Moreover, a block that represents one or more information transmissionsmay correspond to information transmissions between software and/orhardware modules in the same physical device. However, other informationtransmissions may be between software modules and/or hardware modules indifferent physical devices.

While various aspects and embodiments have been disclosed herein, otheraspects and embodiments will be apparent to those skilled in the art.The various aspects and embodiments disclosed herein are for providedfor explanatory purposes and are not intended to be limiting, with thetrue scope being indicated by the following claims.

What is claimed is:
 1. A method comprising: receiving a map of ahorizontal marker plane that includes mapped positions of a first markerand a second marker arranged in the horizontal marker plane; receiving,from a sensor configured to scan a two-dimensional sensor plane, sensordata indicative of measured positions of the first and second markers ateach of a plurality of times; determining a plurality of differencevectors, wherein the plurality of difference vectors correspond to theplurality of times, wherein each difference vector of the plurality ofdifference vectors is determined between a vector that connects themapped positions of the first and second markers and a vector thatconnects the measured positions of the first and second markers at oneof the plurality of times; determining one or more varying magnitudes inthe plurality of difference vectors; and determining, based on the oneor more varying magnitudes in the plurality of difference vectors, thatthe sensor is oscillating relative to the horizontal marker plane. 2.The method of claim 1, wherein determining that the sensor isoscillating relative to the horizontal marker plane based on the one ormore varying magnitudes in the plurality of difference vectors comprisesidentifying a decrease followed by an increase in magnitudes ofdifference vectors over time.
 3. The method of claim 1, whereindetermining that the sensor is oscillating relative to the horizontalmarker plane based on the one or more varying magnitudes in theplurality of difference vectors comprises identifying an increasefollowed by a decrease in magnitudes of difference vectors over time. 4.The method of claim 1, wherein determining that the sensor isoscillating relative to the horizontal marker plane is based ontime-varying characteristics of the plurality of difference vectors. 5.The method of claim 1, wherein the sensor is on a robot.
 6. The methodof claim 5, further comprising navigating the robot based on determiningthat the sensor is oscillating relative to the horizontal marker plane.7. The method of claim 5, further comprising determining one or morevibrations of the robot based on determining that the sensor isoscillating relative to the horizontal marker plane.
 8. The method ofclaim 5, further comprising identifying a collision involving the robotbased on determining that the sensor is oscillating relative to thehorizontal marker plane.
 9. The method of claim 5, further comprisingidentifying a change in velocity of the robot based on determining thatthe sensor is oscillating relative to the horizontal marker plane. 10.The method of claim 1, further comprising determining that the sensor isoscillating between a first position and a second position such that thetwo-dimensional sensor plane is oscillating between a first orientationand a second orientation.
 11. A robotic device comprising: a sensorconfigured to scan a two-dimensional sensor plane; and a control systemconfigured to: receive a map of a horizontal marker plane that includesmapped positions of a first marker and a second marker arranged in thehorizontal marker plane; receive, from the sensor, sensor dataindicative of measured positions of the first and second markers at eachof a plurality of times; determine a plurality of difference vectors,wherein the plurality of difference vectors correspond to the pluralityof times, wherein each difference vector of the plurality of differencevectors is determined between a vector that connects the mappedpositions of the first and second markers and a vector that connects themeasured positions of the first and second markers at one of theplurality of times; determine one or more varying magnitudes in theplurality of difference vectors; and determine, based on the one or morevarying magnitudes in the plurality of difference vectors, that thesensor is oscillating relative to the horizontal marker plane.
 12. Therobotic device of claim 11, wherein the sensor is a laser-based sensorconfigured to detect retroreflective markers.
 13. The robotic device ofclaim 11, wherein the sensor is a rotating sensor.
 14. The roboticdevice of claim 11, wherein the control system is configured todetermine that the sensor is oscillating relative to the horizontalmarker plane based on time-varying characteristics of the plurality ofdifference vectors.
 15. A non-transitory computer readable medium havingstored thereon instructions, that when executed by one or moreprocessors of a computing device, cause the computing device to performfunctions comprising: receiving a map of a horizontal marker plane thatincludes mapped positions of a first marker and a second marker arrangedin the horizontal marker plane; receiving, from a sensor configured toscan a two-dimensional sensor plane, sensor data indicative of measuredpositions of the first and second markers at each of a plurality oftimes; determining a plurality of difference vectors, wherein theplurality of difference vectors correspond to the plurality of times,wherein each difference vector of the plurality of difference vectors isdetermined between a vector that connects the mapped positions of thefirst and second markers and a vector that connects the measuredpositions of the first and second markers at one of the plurality oftimes; determining one or more varying magnitudes in the plurality ofdifference vectors; and determining, based on the one or more varyingmagnitudes in the plurality of difference vectors, that the sensor isoscillating relative to the horizontal marker plane.
 16. Thenon-transitory computer readable medium of claim 15, wherein determiningthat the sensor is oscillating relative to the horizontal marker planeis based on time-varying characteristics of the plurality of differencevectors.
 17. The non-transitory computer readable medium of claim 15,wherein the computing device is a control system for a robotic device.